package com.opengroupe.dao;

import java.util.List;

import com.opengroupe.entities.Candidat;
import com.opengroupe.entities.CandidatReponseQuestion;

public interface CandidatDao extends Dao<Candidat> {

	/**
	 * Retrouve un candidat par son adresse email
	 * 
	 * @param email {@link String} adresse email du candidat
	 * @return {@link Candidat}
	 */
	public Candidat findByEmail(String email);
	
	/**
	 * Retrouve une liste de candidats par leur nom et prenom
	 * 
	 * @param nom {@link String}
	 * @param prenom {@link String}
	 * @return {@link List} de candidat
	 */
	public List<Candidat> findByNomPrenom(String nom, String prenom);
	
	/**
	 * Retrouve tout les candidats de la base de donn�es
	 * @return {@link List} de candidat
	 */
	public List<Candidat> findAll();
	
	/**
	 * Removes from database the {@link Candidat} with the specified email.
	 * It deletes also all {@link CandidatReponseQuestion} linked to the 
	 * {@link Candidat} to be removed
	 * 
	 * @param emailCandidat
	 */
	public void deleteCascade(String emailCandidat);
}
